English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ map operator[] 함수 사용법 및 예제

C++ STL map(컨테이너)

C ++ map operator []함수는 주어진키 값map의 요소에 접근합니다.

그와 유사하게at()함수. 그들은 map에 존재하지 않는 키를 참조할 때 예외를 발생시키는 유일한 차이점이며, 또한 map에 존재하지 않는 키가 있을 경우operator[]키를 map에 삽입합니다.

문법

키 값k에서

mapped_type& operator[](const key_type& k);    // C++ 11 전에
mapped_type& operator[](const key_type& k);   //C++ 11 시작
mapped_type& operator[](key_type&& k); //C++ 11 시작

파라미터

k:map 값의 요소에 접근하는 키 값.

반환 값

그는 키 값을 사용하여 요소의 map 값에 대한 참조를 반환합니다.

实例1

요소에 접근하는 간단한 예제를 보여드리겠습니다.

#include <iostream>
#include <map>
using namespace std;
int main() 
{
  
   map<char, int> m = {
            {'a', 1},
            {'b', 2},
            {'c', 3},
            {'d', 4},
            {'e', 5},
            };
   cout << "Map은 다음 요소를 포함합니다" << endl;
   cout << "m['a'] = " << m['a'] << endl;
   cout << "m['b'] = " << m['b'] << endl;
   cout << "m['c'] = " << m['c'] << endl;
   cout << "m['d'] = " << m['d'] << endl;
   cout << "m['e'] = " << m['e'] << endl;
   return 0;
}

출력:

Map은 다음 요소를 포함합니다
m['a'] = 1
m['b'] = 2
m['c'] = 3
m['d'] = 4
m['e'] = 5

위에서 operator [] 함수는 map의 요소에 접근하는 데 사용됩니다.

实例2

이제 간단한 예제를 보여드리겠습니다. 그들의 키 값을 사용하여 요소를 추가합니다.

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
  map<int,string> mymap = {
                { 101, "" },
                { 102, "" },
                { 103, ""} };
  mymap[101] = "w3codebox"; 
  mymap[102] = ".";
  mymap[103] = "com";
  //打印与键101相关联的值,即w}}3codebox
  cout << mymap[101}; 
  // 打印与键102相关的值,即.
  cout << mymap[102};
  //打印与键103相关的值,即com
  cout << mymap[103};
  return 0;
}

출력:

oldtoolbag.com

在上面的示例中,operator []用于在初始化后使用关联的键值添加元素。

实例3

让我们看一个简单的示例,以更改与键值关联的值。

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
  map<int,string> mymap = {
                { 100, "Nikita"}},
                { 200, "Deep" }};
                { 300, "Priya" },
                { 400, "Suman" },
                { 500, "Aman" }};
                
  cout << "元素是:" << endl;
  for (auto& x: mymap) {
    	cout << x.first << ": \
  }
  mymap[100] = "Nidhi"; //将与键100关联的值更改为Nidhi
  mymap[300] = "Pinku"; //将与键300关联的值更改为Pinku
  mymap[500] = "Arohi"; //将与键500关联的值更改为Arohi
  
  
  cout << "\n更改后的元素是:" << endl;
  for (auto& x: mymap) {
    	cout << x.first << ": \
  }
  
  return 0;
}

출력:

元素是:
100: Nikita
200: Deep
300: Priya
400: Suman
500: Aman
更改后的元素是:
100: Nidhi
200: Deep
300: Pinku
400: Suman
500: Arohi

在上面的示例中,operator []函数用于更改与其键值关联的值。

实例4

让我们看一个简单的实例来区分operator []和at()。

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
  map<char,string> mp = {
                { 'a',"Java"},
                { 'b', "C++" },
                { 'c', "Python" }};
            
    cout << endl << mp['a'];
    cout << endl << mp['b'];
    cout << endl << mp['c'];
    
     mp['d'] = "SQL";           
     cout << endl << mp['d'];
     
    try {
        mp.at('z'); 
          //由于map中没有值为z的键,因此会抛出异常       
    catch(const out_of_range &e) {
        cout << endl << "\nout_of_range 예외 " << e.what();
    }
return 0;
}

출력:

Java
C++
Python
SQL
out_of_range 예외 map::at

위의 예제에서 at() 함수를 사용할 때, 맵에 값 z의 키가 없기 때문에 out_of_range 예외가 발생합니다. 또한, operator []를 사용하여 키 값 d에 요소를 추가할 때, 맵에 키值为“ d”가 없는 경우, 맵에 키值为“ d”이고 값이 “SQL”인 키-밸류 쌍을 삽입합니다.

C++ STL map(컨테이너)